// pages/list/list.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    info: '数据绑定:',
    myImg: 'https://foruda.gitee.com/images/1717472553497543532/83dfdc0d_8829481.png',
    userData: {
      name: '张三',
      age: '18',
      hobby: '打篮球',
      grade: '六年级',
      address: '广东省',
      randomNum: Math.random().toFixed(2) // 生成1以内的随机数并保留两位小数
    },
    btnAddValue: 0,
    inputDefaultValue: "请输入内容123",
    imgIsShow: true,
    xlistData: [
      { id: 1, name: '小米' },
      { id: 2, name: '华为' },
      { id: 3, name: '苹果' },
      { id: 4, name: '魅族' },
      { id: 5, name: '联想' },
      { id: 6, name: '三星' },
      { id: 7, name: '荣耀' },
    ],
    myGetRequestData: '',
    pullCount: 0,
    //对上拉触底事件触发搜索的限制(当前请求结束才能进行下一次请求)，通过判断myisSearchLoading的true和false来实现
    myisSearchLoading: false, //false表示当前没有发起请求，上拉触底时可以发起请求操作
  },

  XonDefaultBtn(e) {
    wx.showModal({
      title: '提示',
      content: `你点击了 默认按钮\r\n事件类型: ${e.type}\r\n已经过去: ${Math.floor(e.timeStamp / 1000)} 秒`,
      showCancel: false
    });
  },
  XonPrimaryBtn(e) {
    wx.showModal({
      title: '提示',
      content: `你点击了 主要按钮\r\n事件类型: ${e.type}\r\n已经过去: ${Math.floor(e.timeStamp / 1000)} 秒`,
      showCancel: false
    });
  },
  XonWarnBtn(e) {
    wx.showModal({
      title: '提示',
      content: `你点击了 警告按钮\r\n事件类型: ${e.type}\r\n已经过去: ${Math.floor(e.timeStamp / 1000)} 秒`,
      showCancel: false
    });
  },
  XonMiniDefaultBtn() {
    this.setData({
      btnAddValue: this.data.btnAddValue - 1
    });
  },
  XonMiniPlainBtn() {
    // 给最上面的 Page({data:{xxxx:值}}) 的值重新赋值
    this.setData({
      btnAddValue: this.data.btnAddValue + 1
    });
  },
  XonTransmitBtn(e) {
    wx.showModal({
      title: '提示',
      // 如何拿到传递的参数: e.target.dataset.参数名
      // dataset是一个对象，里面有这个按钮的所有data-*参数值
      content: `拿到传递的指定参数是: ${e.target.dataset.my2024value}\r\n，拿到传递的所有参数是: ${JSON.stringify(e.target.dataset)}`,
      showCancel: false
    });
  },
  XonInput(e) {
    this.setData({
      // 获取输入框值的固定格式是 e.detail.value
      inputDefaultValue: e.detail.value,
    });
    wx.showModal({
      title: '提示',
      content: `输入框的最新值是: ${this.data.inputDefaultValue}`,
      showCancel: false
    });
  },

  XonImgIsTrueShow() {
    this.setData({
      imgIsShow: false,
    });
  },

  XonImgIsFalseShow() {
    this.setData({
      imgIsShow: true,
    });
  },

  XonGetRequest() {
    wx.showLoading({
      title: '加载中',
      mask: true 
    })
    wx.request({
      url: 'https://huanf.top:7447/category/getCategoryList',
      method: 'GET',
      success: (res) => {
        this.setData({
          myGetRequestData: JSON.stringify(res.data),
        });
      },
      // 只有请求异常的时候，fail才会被执行
      fail: () => {
        wx.showModal({
          title: '提示',
          content: `接口异常`,
          showCancel: false
        });
      },
      // 无论请求是否正常，complete都会被执行
      complete: () => {
        wx.hideLoading();
      }
    });
  },

  XnavigateTo() {
    wx.navigateTo({
      url: '/pages/logs/logs',
      success: () => {
        wx.showToast({
          title: '跳转页面成功',
          icon: 'success',
          duration: 2000
        })
      },
      fail: () => {
        wx.showModal({
          title: '提示',
          content: `跳转页面失败`,
          showCancel: false
        });
      },
    });
  },

  XswitchTab() {
    wx.switchTab({
      url: '/pages/index/index',
      success: () => {
        wx.showToast({
          title: '跳转底部栏成功',
          icon: 'success',
          duration: 2000
        });
      },
      fail: () => {
        wx.showModal({
          title: '提示',
          content: `失败`,
          showCancel: false
        });
      },
    });
  },

  XnavigateToParam() {
    wx.navigateTo({
      url: '/pages/logs/logs?name=navigateTo张三&age=navigateTo20',
      success: () => {
        wx.showToast({
          title: '跳转页面成功',
          icon: 'success',
          duration: 2000
        })
      },
      fail: () => {
        wx.showModal({
          title: '提示',
          content: `跳转页面失败`,
          showCancel: false
        });
      },
    });
  },

  /**
   * 触发页面的下拉刷新。使用场景: 展示列表数据时，重置data定义的currentPage(例如修改为1)、totalSize(例如修改为0)、数据list数组(例如修改为[]空数组)
   */
  onPullDownRefresh() {
    this.setData({
      pullCount: this.data.pullCount + 1
    });
    //下拉刷新不会自动收回，需要手动收回
    setTimeout(function() {
      wx.stopPullDownRefresh();
    }, 500);
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  /**
   * 生命周期函数--页面渲染完成
   */
  onReady(options) {
    //设置页面最上方的title
    wx.setNavigationBarTitle({
      title: '首页', 
    })
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

    //如果当前正在发起请求，此时又有一个新请求进来，那么就把新请求拒绝，避免多次触发上拉触底的搜索请求
    if(this.data.myisSearchLoading) {
      return;
    }

    this.setData({
      myisSearchLoading: true //true表示当前正在发起请求
    })

    // 遮罩层效果
    wx.showLoading({
      title: '加载中...',
      mask: true
    });

    
    const that = this;
    //模拟发起搜索的请求，保证只有一个请求能执行到此处
    setTimeout(function() {
      //请求结束之后，把myisSearchLoading的值修改回false。真实场景的话，要在wx.request的complete里面把myisSearchLoading的值修改回false
      that.setData({
        myisSearchLoading: false //true表示当前正在发起请求
      });
      wx.hideLoading();
    }, 1000);
    
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})